API Server端口配置
译者:Nancy
校对:无
本文档介绍Kubernetes apiserver服务的端口以及如何访问这些端口。观众都是集群管理员,都想定制他们自己的集群或者了解细节。
有关集群访问的更多问题,在Accessing the cluster都有覆盖。
服务的Ports和IPs
Kubernets API Server进程提供Kuvernetes API。通常情况下,有一个进程运行在单一kubernetes-master节点上。
默认情况,Kubernetes API Server提供HTTP的两个端口:
1.本地主机端口
- HTTP服务
- 默认端口8080,修改标识--insecure-port
- 默认IP是本地主机,修改标识—insecure-bind-address
- 在HTTP中没有认证和授权检查
- 主机访问受保护
2.Secure Port
- 默认端口6443,修改标识—secure-port
- 默认IP是首个非本地主机的网络接口,修改标识—bind-address
- HTTPS服务。设置证书和秘钥的标识,--tls-cert-file,--tls-private-key-file
- 认证方式,令牌文件或者客户端证书
- 使用基于策略的授权方式
3.移除:只读端口
- 基于安全考虑,会移除只读端口,使用Service Account代替。
代理和防火墙规则
此外,在某些配置文件中有一个代理(nginx)作为API Server进程运行在同一台机器上。该代理是HTTPS服务,认证端口是443,访问API Server是本地主机8080端口。在这些配置文件里,Secure Port通常设置为6443。
防火墙规则,通常配置运行外部HTTPS通过443端口访问。
上面的都是默认配置,反应了Kubernetes使用kube-up.sh如何部署到Google Compute Engine。其它的云提供商可能会有所不同。
用例和IP:Ports
有关服务端口,有三种不同的配置,有各自的应用场景。
- Kubernetes集群之外的客户端,例如在台式机上运行kubectl命令的人员。目前,通过运行在kubernetes-master机器上面的代理(nginx)访问本地主机端口。该代理可以使用证书认证或者Token认证方式。
- 运行在Kuvernetes的Container里面的进程需要从API Server中读取。目前,这些进程都是用Service Account
- 调度器和Controller管理进程,需要对API做读写操作。目前,这些都必须运行在API Server同样的主机上面,使用本地主机。未来,这些进程将会使用Service Account服务,避免共存的必要。
- Kubelets,需要对API做读写操作,并且同API Server相比,它必须运行在不同的机器上面。Kubelet使用Secure Port获取Pod,发现Pod可以看到的服务,并且记录这些事件。在集群启动事件内,分布设置Kubelet凭证。Kubelet和Kube-proxy可以使用证书认证和Token认证方式。
预期变化
- Policy会限制Kubelet通过身份认证端口实行的一些操作。
- 调度器和Controller管理也会使用Secure Port。他们可以运行在不同的机器上。